#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/6/13 11:53
# @USER    : Shengji He
# @File    : MultiplyStrings.py
# @Software: PyCharm
# @Version  : Python-
# @TASK:
class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        """
        Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2,
        also represented as a string.

        Example 1:
            Input: num1 = "2", num2 = "3"

            Output: "6"
        Example 2:
            Input: num1 = "123", num2 = "456"

            Output: "56088"
        Note:
            - The length of both num1 and num2 is < 110.
            - Both num1 and num2 contain only digits 0-9.
            - Both num1 and num2 do not contain any leading zero, except the number 0 itself.
            - You must not use any built-in BigInteger library or convert the inputs to integer directly.

        :param num1: str
        :param num2: str
        :return:
        """
        if num1 == '0' or num2 == '0':
            return '0'
        res = [0] * (len(num1) + len(num2))
        for i in range(len(num1) - 1, -1, -1):
            for j in range(len(num2) - 1, -1, -1):
                a = res[i + j + 1] + int(num1[i]) * int(num2[j])
                res[i + j + 1] = a % 10
                res[i + j] += a // 10

        ans = ''
        for i in range(len(res)):
            if i == 0 and res[i] == 0:
                continue
            ans += str(res[i])
        return ans


if __name__ == '__main__':
    S = Solution()
    num1 = '9133'
    num2 = '0'
    print(S.multiply(num1, num2))
    print('done')
